package com.atguigu.day13.teacher.in2;

/*
静态成员内部类:
    位置: 类中方法外
    注意:
       1.普通成员内部类前+static

       2.静态成员内部类使用外部类资源:
             非静态 创建外部类对象 对象名.资源名
             静态   直接使用外部类的静态资源

       3.外部类使用静态成员内部类资源
            静态  内部类名.资源名
            非静态 创建内部类对象 对象名.资源名

       4.外部直接使用内部类资源
           静态 外部类名.内部类名.资源名   Outer.Inner.innerMehtod02();
           非静态 创建内部类对象        外部类名.内部类名 对象名 = new 外包类名.内部类名();
                                        Outer.Inner inner = new Outer.Inner();
       5.静态成员内部类也会产生独立的字节码文件  外部类名$内部类名.class
                                           Outer$Inner.class

 */
public class Outer {
    String name = "Outer";
    static int age = 20;

    public static void outerMethod01() {
        System.out.println(" static outerMethod01");
    }

    public void outerMethod02() {
        //System.out.println("outerMethod02");
        Inner.innerMehtod02();
        Inner inner = new Inner();
        System.out.println("inner.str = " + inner.str);
    }

    static class Inner {
        public void innerMehtod01() {
            System.out.println("age = " + age);
            Outer outer = new Outer();
            System.out.println("name = " + outer.name);
        }

        String str = "Inner";

        public static void innerMehtod02() {
            System.out.println("static innerMehtod02 ");
        }
    }

}
